# 使用官方的 .NET SDK 镜像作为构建环境
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build-env

# 设置工作目录
WORKDIR /src

# 复制项目文件并恢复依赖
COPY . ./

RUN dotnet restore --interactive

# 发布项目
RUN dotnet publish -c Release -o /app/publish

# 使用官方的 .NET 运行时镜像作为运行环境
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS runtime

# 设置工作目录
WORKDIR /app

# 从构建环境复制发布结果
COPY --from=build-env /app/publish .

# 安装 curl 并清理缓存
RUN apt-get update && \
    apt-get install -y --no-install-recommends curl && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/* && \
    find / -perm /6000 -type f -exec chmod a-s {} \; || true
	
# 设置环境变量以使用生产环境配置
ENV ASPNETCORE_ENVIRONMENT=Staging

# 暴露端口
EXPOSE 7881

# 添加健康检查
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
    CMD curl --fail http://localhost:7881 || exit 1

# 设置启动命令
ENTRYPOINT ["dotnet", "SafetyForAll.WebApi.dll"]
